package com.hengpeng.itfints.service.repayment;

import java.util.Date;
import java.util.List;

import com.hengpeng.itfinbase.en.InvestStatus;
import com.hengpeng.itfinbase.persist.ReceivePlan;
import com.hengpeng.itfinbase.persist.RepaymentPlan;

/**
 * <pre>
 * 还款追偿服务类
 * </pre>
 * @author weiyuan
 * @version 1.0, 2015年5月30日
 */
public interface RepaymentService
{
	/**
	 * <pre>
	 * 获取还款计划
	 * </pre>
	 * @param borrowInfoId 借款标的
	 * @param curRecNum 当前还款计划期数
	 * @param status 还款计划状态
	 * @return
	 */
	public List<RepaymentPlan> getRepaymentPlans(Long borrowUserId, Long borrowInfoId, Integer curRecNum, RepaymentPlan.ReplaymentStatus status);

	/**
	 * <pre>
	 * 获取收款信息
	 * </pre>
	 * @param borrowinfoId
	 * @param curRecNum
	 * @param status
	 * @return
	 */
	public List<ReceivePlan> getReceivePlans (Long borrowinfoId,Long investUserId,Integer curRecNum,ReceivePlan.ReceiveStatus status);
	
	/**
	 * <pre>
	 * 获取首页收款信息
	 * </pre>
	 * @param borrowinfoId
	 * @param curRecNum
	 * @param status
	 * @return
	 */
	public List<ReceivePlan> getIndexReceivePlans (Long investUserId,Integer curPage,Integer pageSize);
	/**
	 * <pre>
	 * 获取投资人某天的收益金额
	 * </pre>
	 * @param userId
	 * @param date
	 * @return
	 */
	public String getInterestMoney (Long userId, Date date);
	/**
	 * <pre>
	 * 获取指定用户下一个回款日的收益信息
	 * </pre>
	 * @param userId
	 * @return
	 */
	public List<String> getNextReceiveDayInfo (Long userId);
	/**
	 * 获取指定用户已收款的收益信息
	 */
	public List<String> getReceivedInfo (Long userId,ReceivePlan.ReceiveStatus status);
	/**
	 * 获取指定用户投标中的投资信息
	 */
	public List<String> getInvestingInfo(Long userId,InvestStatus status);
	/**
	 * <pre>
	 * 获取指定人员的收款时间列表
	 * </pre>
	 * @param userId
	 * @param nowYear
	 * @param nowMonth
	 * @return
	 */
	public List<String> getReceiveDay (Long userId, String nowYear, String nowMonth);
}
